Package de.yaams.extensions.basemap.tiled.mapeditor.dialogs

Source Code of de.yaams.extensions.basemap.tiled.mapeditor.dialogs.PropertiesDialog

/*
* Tiled Map Editor, (c) 2004-2006
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* Adam Turk <aturk@biggeruniverse.com> Bjorn Lindeijer <bjorn@lindeijer.nl>
*/

package de.yaams.extensions.basemap.tiled.mapeditor.dialogs;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Properties;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;

import de.yaams.extensions.basemap.tiled.mapeditor.Resources;
import de.yaams.extensions.basemap.tiled.mapeditor.util.PropertiesTableModel;
import de.yaams.extensions.basemap.tiled.mapeditor.widget.VerticalStaticJPanel;

/**
* @version $Id$
*/
public class PropertiesDialog extends JDialog {
  /**
   *
   */
  private static final long serialVersionUID = 7921127728498077643L;
  protected JTable propertiesTable;
  protected final Properties properties;
  protected final PropertiesTableModel tableModel = new PropertiesTableModel();
  protected JPanel mainPanel;

  private static final String DIALOG_TITLE = Resources.getString("dialog.properties.title");
  private static final String OK_BUTTON = Resources.getString("general.button.ok");
  private static final String DELETE_BUTTON = Resources.getString("general.button.delete");
  private static final String CANCEL_BUTTON = Resources.getString("general.button.cancel");

  public PropertiesDialog(JFrame parent, Properties p) {
    super(parent, DIALOG_TITLE, true);
    properties = p;
    init();
    pack();
    setLocationRelativeTo(getOwner());
  }

  protected void init() {
    propertiesTable = new JTable(tableModel);
    JScrollPane propScrollPane = new JScrollPane(propertiesTable);
    propScrollPane.setPreferredSize(new Dimension(200, 150));

    JButton okButton = new JButton(OK_BUTTON);
    JButton cancelButton = new JButton(CANCEL_BUTTON);
    JButton deleteButton = new JButton(Resources.getIcon("gnome-delete.png"));
    deleteButton.setToolTipText(DELETE_BUTTON);

    JPanel user = new VerticalStaticJPanel();
    user.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
    user.setLayout(new BoxLayout(user, BoxLayout.X_AXIS));
    user.add(Box.createGlue());
    user.add(Box.createRigidArea(new Dimension(5, 0)));
    user.add(deleteButton);

    JPanel buttons = new VerticalStaticJPanel();
    buttons.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
    buttons.setLayout(new BoxLayout(buttons, BoxLayout.X_AXIS));
    buttons.add(Box.createGlue());
    buttons.add(okButton);
    buttons.add(Box.createRigidArea(new Dimension(5, 0)));
    buttons.add(cancelButton);

    mainPanel = new JPanel();
    mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
    mainPanel.add(propScrollPane);
    mainPanel.add(user);
    mainPanel.add(buttons);

    getContentPane().add(mainPanel);
    getRootPane().setDefaultButton(okButton);

    // create actionlisteners
    okButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent actionEvent) {
        buildPropertiesAndDispose();
      }
    });

    cancelButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent actionEvent) {
        dispose();
      }
    });

    deleteButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent actionEvent) {
        deleteSelected();
      }
    });
  }

  public void updateInfo() {
    tableModel.setProperties(properties);
  }

  public void getProps() {
    updateInfo();
    setVisible(true);
  }

  protected void buildPropertiesAndDispose() {
    // Make sure there is no active cell editor anymore
    TableCellEditor editor = propertiesTable.getCellEditor();
    if (editor != null) {
      editor.stopCellEditing();
    }

    // Apply possibly changed properties.
    properties.clear();
    properties.putAll(tableModel.getProperties());

    dispose();
  }

  protected void deleteSelected() {
    int total = propertiesTable.getSelectedRowCount();
    Object[] keys = new Object[total];
    int[] selRows = propertiesTable.getSelectedRows();

    for (int i = 0; i < total; i++) {
      keys[i] = propertiesTable.getValueAt(selRows[i], 0);
    }

    for (int i = 0; i < total; i++) {
      if (keys[i] != null) {
        tableModel.remove(keys[i]);
      }
    }
  }
}
TOP

Related Classes of de.yaams.extensions.basemap.tiled.mapeditor.dialogs.PropertiesDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.